# coding: utf-8

# 作者：雪山凌狐
# 代码复现：梯度下降问题例子

import random

# loss 函数
def loss(k):
    return 3 * (k ** 2) + 7 * k - 10

# 最优解计算方法：-b / 2a = -7 / 6 约等于 -1.167

# loss 对 k 求偏导的函数
def partial(k):
    return 6 * k + 7


k = random.randint(-10, 10)
alpha = 1e-3  # 0.001 学习率

for i in range(1000):
    k = k + (-1) * partial(k) * alpha
    print(k, loss(k))

# 通过梯度下降的方法可以看到 k 的值大概为 -1.183，很接近